home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_actor_st_pnch.cog < prev    next >
Text File  |  1998-02-25  |  5KB  |  178 lines

  1. # Jedi Knight Cog Script
  2. #
  3. # ACTOR_ST.COG
  4. #
  5. # ACTOR SCRIPT - Standard Stormtrooper
  6. #
  7. # 7/28/97 [CR] Doubled saber damage for single player gameplay reasons
  8. #
  9. # [CYW, YB & CR]
  10. #
  11. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  12.  
  13.  
  14. symbols
  15.  
  16. message     killed
  17. message     damaged
  18. message     skill
  19. message     timer
  20.  
  21. int         oldAIMode                        local
  22. int         isFrozenNow=0                    local
  23. flex        extraFreezeTime=0.0              local
  24. template    powerup=+DSTrifle                local
  25. template    limb=+stormlimb                  local
  26. int         newThing                         local
  27. int         victim                           local
  28. int         bin                              local
  29. int         senderref=-1                     local
  30. ai          flee_ai=noweapon.ai              local
  31. ai          punch_ai=st_punch.ai             local
  32. int         damage                           local
  33. vector      currentpos                       local
  34.  
  35. end
  36.  
  37. # ========================================================================================
  38.  
  39. code
  40.  
  41. damaged:
  42.    damage = GetParam(0);
  43.    if(GetParam(1) == 16)                     // saber damage might cause dismemberment
  44.    {
  45.       damage = (damage * 2.0);
  46.       victim = GetSenderRef();
  47.       if(GetThingHealth(victim) <= damage)   // but only if damage is sufficient to kill
  48.       {
  49.          if(rand() < 0.05)                   // random chance
  50.          {
  51.             AmputateJoint(victim, 5);
  52.             newThing = CreateThingAtPos(limb, GetThingSector(victim), GetThingPos(victim), '0 0 0');
  53.             SetThingVel(newThing, '0.0 0.7 1.4');
  54.          }
  55.       }
  56.    }
  57.    ReturnEx(damage);
  58.    return;
  59.  
  60. # ........................................................................................
  61.  
  62. killed:
  63.    victim = GetSenderRef();
  64.  
  65.    if(GetActorWeapon(victim, 1) != -1)
  66.    {
  67.       AmputateJoint(victim, 3);
  68.  
  69.       newThing = CreateThing(powerup, victim);
  70.       SetLifeleft(newThing, 200.0);
  71.    }
  72.  
  73.    return;
  74.  
  75. # ........................................................................................
  76.  
  77. skill:
  78.    bin = GetParam(0);
  79.    if(bin == 24)                             // Force Pull
  80.    {
  81.       // he's a fighter, not a fleer... -srs
  82.  
  83.       senderref = GetSenderRef();
  84.             // If he hasn't been pulled yet...
  85.         if (GetActorWeapon (senderref, 1) != -1)
  86.         {
  87.             SetActorWeapon(senderref, 1, -1);
  88.  
  89.             newThing = CreateThing(powerup, GetSenderRef());
  90.             SetLifeleft(newThing, 30.0);
  91.  
  92.             AISetClass (senderref, punch_ai);
  93.             AISetMode(senderref, 0x4);
  94.  
  95.             ReturnEx(newThing);
  96.         }
  97.         else
  98.         {
  99.                 // Give the actor a shove towards the player.
  100.             currentpos = VectorSub(GetThingPos(GetLocalPlayerThing(), senderref));
  101.             currentpos = VectorScale(VectorNorm(currentPos), 250);
  102.             ApplyForce(senderref, currentpos);
  103.  
  104.             ReturnEx(-1);
  105.         }
  106.  
  107.       //AIFlee(senderref, GetLocalPlayerThing());
  108.  
  109.       Return;
  110.    }
  111.    else
  112.    if(bin == 31)                             // Force Grip
  113.    {
  114.       ReturnEx(10);                          // return base damage that is taken by this actor.
  115.       Return;
  116.    }
  117.    else
  118.    if(bin == 34)                             // Deadly Sight
  119.    {
  120.       ReturnEx(10);                          // return base damage that is taken by this actor.
  121.       Return;
  122.    }
  123. // else
  124. // if(bin == 1035)                           // Carbonite
  125. // {
  126. //    if (!isFrozenNow)
  127. //    {
  128. //       senderref = GetSenderRef();
  129. //       victim = GetParam(2);
  130. //
  131. //       isFrozenNow = 1;
  132. //         extraFreezeTime = 0.0;
  133. //
  134. //       oldAIMode = AIGetMode(victim);
  135. //       AISetMode(victim, 0x2000);          // Disable the actor's AI.
  136. //       AISetMoveThing(victim, victim);     // Set the thing as it's own destination so it stops moving.
  137. //
  138. //       SetTimerEx(GetParam(1), 1035, victim, 0); // Make an appointment for "Unthawing"
  139. //    }
  140. //    else
  141. //    {
  142. //       extraFreezeTime = extraFreezeTime + GetParam(1);
  143. //    }
  144. //
  145. //    ReturnEx(0);
  146. //    return;
  147. // }
  148.  
  149.    ReturnEx(-1);
  150.    return;
  151.  
  152. # ........................................................................................
  153.  
  154. timer:
  155.    senderref = GetSenderRef();
  156.  
  157.    if(GetSenderId() == 1035)  // Thaw out
  158.    {
  159.       victim = GetParam(0);
  160.  
  161.       if (!extraFreezeTime)
  162.       {
  163.          AIClearMode(victim, 0xFFFFFFFF);
  164.          AISetMode(victim, oldAIMode);       // Reinstate the actor's AI.
  165.          isFrozenNow = 0;
  166.       }
  167.       else
  168.       {
  169.             // We've been hit more than once, so we need to extend the freeze time.
  170.          SetTimerEx(extraFreezeTime, 1035, victim, 0);   // Make an appointment for "Unthawing"
  171.          extraFreezeTime = 0.0;
  172.       }
  173.    }
  174.    Return;
  175.  
  176. end
  177.  
  178.